package json

import "fmt"

// Product 商品信息
type Product struct {
	Name      string  `json:"name"`
	ProductID int64   `json:"-"`      // 表示不进行序列化,
	Number    int     `json:"number"` //tag里面加上omitempy，可以在序列化的时候忽略0值或者空值
	Price     float64 `json:"price,omitempty"`
	IsOnSale  bool    `json:"is_on_sale,string"`
}

type UserRequest struct {
	Name  string
	Mail  string
	Phone *Phone
}

// Phone _
type Phone struct {
	Value string
}

// UnmarshalJSON _ 重载MarshalJSON实现自定义反序列化
func (p *Phone) UnmarshalJSON(data []byte) error {
	// 这里简单演示一下，简单判断即可
	if len(data) != 11 {
		return fmt.Errorf("phone format error")
	}
	p.Value = string(data)
	return nil
}

// MarshalJSON _  重载MarshalJSON实现自定义序列化
func (p *Phone) MarshalJSON() (data []byte, err error) {
	if p != nil {
		//p.Value = p.Value+"\"\""
		data = []byte(p.Value)
	}

	return
}
